home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Inside Mac Games Volume 5 #3
/
IMG 46 Vol 5-3.iso
/
More Goodies
/
More For Your Game
/
Dark Forces
/
Documentation ƒ
/
DF Editors' Guide
/
GOL Guide
< prev
next >
Wrap
Text File
|
1996-08-03
|
13KB
|
382 lines
[Best viewed with COURIER-10]
…ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕª
∫ DARK FORCES MISSION GOALS & MISSION COMPLETION ∫
∫ version 2 ∫
∫ by Jereth Kok (kokjm@stmichaels.vic.edu.au) ∫
"ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕº
Acknowledgements:
-----------------
LucasArts Entertainment Company -- creators of Dark Forces
Yves Borckmans -- creator of DFUSE & WDFUSE
Ben & Pat McBride -- makers of the DFUSE tutorials
Introduction
------------
This file (DFGOALS.TXT) contains a full formal explanation on how to create
mission goals in Dark Forces. Beginners should use it as a learning tool,
while people experienced with editing levels can use it as a reference.
I assume that anyone reading this file is a user of Yves Borckmans' DFUSE
of WDFUSE.
Note: Anything significant which I've added in version 2 is marked by [NEW]
CONTENTS
--------
1. Overview
2. The GOL file
3. [NEW] Completion elevators
4. Object GOALS
5. Trigger GOALS
6. Special trigger goals
7. Boss goals!
1. GOAL OVERVIEW
----------------
A mission goal is quite self explanatory. Each Dark Forces level has one or
more objectives that must be completed in order to move on to the next level.
Each time a goal is completed, the objective screen of your PDA will turn
that goal from green to yellow to show that the goal has been completed.
There are two types of goals - object goals and trigger goals.
[NEW] Mission goals/completion is handled jointly by the level GOL file and
INF file. While the GOL file handles the objective screen of your PDA, the
INF file tells the GOL file what to do, allows mission completion, and handles
trigger goals.
[NEW] The PDA objective screens are located in the DELT files contained in
DFBRIEF.LFD. Using the WDFUSE LFD file manager, you can extract the DELTs
from DFBRIEF.LFD and convert them to BMPs so that you can edit them. After
that it's only a matter of re-converting them and replacing them in the
DFBRIEF.LFD
2. THE GOL FILE
---------------
This is the entry for an object goal:
| GOAL: [num] ITEM: [num]
GOAL: [num] -- This is the number of the goal starting from 0
and ascending in integers. It corresponds
with the objective display in the PDA.
ITEM: [num] -- This corresponds with a goal object. Here are the
possible goal objects and their num:
Object - Num -
IDPLANS.WAX 0
IPHRIK.FME 1
INAVA.WAX 2
IDATA.FME 4
IDTGUN.FME 5
IPILE.FME 6
The logics of the above goal objects will fire the appropriate ITEM: [num] to
show in the PDA that the goal object has been taken. [NEW] Obviously, it is
only possible to have one of each goal object in each level for this to work
properly.
This the entry for a trigger goal:
| GOAL: [num] TRIG: [num]
GOAL: [num] -- Same as for object goals.
TRIG: [num] -- This corresponds with the "complete" message.
Depending on whether the "complete" message is sent
by an elevator or trigger, it could take the form
of either:
| message: [stop] [completion elevator] complete [num]
**OR**
| client: [completion elevator]
| message: complete [num]
The message will fire the TRIG: [num] to show in the PDA that the goal
trigger has been triggered.
3. [NEW] COMPLETION ELEVATORS
-----------------------------
The most important component of an INF file when creating goals is a
"completion elevator". This is an elevator which is moved to its next stop
each time a goal is completed, and finally reaches a "complete" stop when the
mission is complete. This elevator should be called "COMPLETE" because, as
you'll soon see, object goal logics won't affect elevators with any other
name. It is also usually a dummy sector - ie. inaccessible to the PLAYER.
Here is an example of a completion elevator.
| item: sector name: complete
| seq
| class: elevator move_floor
| event_mask: 0
| speed: 0
| stop: 0 hold
| stop: 1 hold /* arrives here when 1st goal is completed */
| stop: 2 hold /* arrives here when 2nd goal is completed */
| ......
| stop: n complete /* arrives here when final goal is
| completed */
| seqend
It may be necessary to create "sub-completion" elevators, usually when you
want a trigger goal to be completed only after other goals are completed
first. For example, all the levels where you must return to the landing pad
make use of this. Otherwise, all you'd need to do to complete these levels
would be to leave the sector you start in, the walk back in several times
until the completion elevator has reached its complete stop! :-)
A sub-completion elevator would have its "master: off" at the start of the
level. Completing all of the other goals would turn "master: on". Then, when
you set off the trigger by entering the landing pad sector, the sub-completion
elevator would move to a stop where a message is sent to the completion
elevator to move it to its complete stop.
4. OBJECT GOALS
---------------
These are the possible objects that can be used as goals:
Object Num
IDPLANS.WAX 0 (Death Star Plans)
IPHRIK.FME 1 (Phrik metal)
INAVA.WAX 2 (Nava Card)
IDATA.FME 4 (Data tapes)
IDTGUN.FME 5 (Broken Dark Trooper weapon)
IPILE.FME 6 (Your gear)
Important: these MUST have their proper logic in order to be a goal. Their
logics serve two purposes when the objects are picked up:
1) They fire the appropriate "ITEM: [num]" in the GOL file.
2) They move the completion elevator (this MUST be called "complete")
to it's next stop.
5. TRIGGER GOALS
----------------
To make a trigger goal, you will need the following in the trigger's INF file
sequence:
| client: [completion elevator]
| message: complete [num]
If you instead prefer to use an elevator to send the complete message:
| message: [stop] [completion elevator] complete [num]
The "complete" message serves two purposes:
1) It fires the appropriate "TRIG: [num]" in the GOL file.
2) It moves [completion elevator] to its next stop.
6. SPECIAL TRIGGER GOALS
------------------------
These are two special cases of trigger goals. Here's how to make them...
6a. Tracking device
-------------------
This is found in Ramses Hed. This is what happens: the wall with the tracking
device texture is in a small alcove sector. This sector is a both an
elevator scroll_wall, and a trigger operated by nudging from the outside which
causes a dummy elevator to move to its next stop. At its next stop, the dummy
elevator moves the sector with the tracking device texture to its next stop
at speed: 0 (instantaneous) so it appears as if Kyle has placed the tracking
device on the wall. At this stop, the dummy sector also sends a "complete"
message to the completion elevator.
Here's how to create this same effect in your level:
Firstly, create a small rectangular sector with height 8. Two
sides should have a width of 8 and the other two sides should have a very
small width (1 or 2). Adjoin this to the desired sector so it is an alcove
at Kyle's eye level. Call this sector "track_dev". Place texture IATRKDEV.BM
on the wall opposite the wall with the adjoin. Give this wall flag 1 bit 128
(allow scroll mid tx). Add a dummy sector and call it "dummy". Now add the
following items to the INF file of the level (add 2 to"items #").
| item: sector name: track_dev
| seq
| class: trigger
| event_mask: 32
| client: dummy
|
| class: elevator scroll_wall
| event_mask: 0
| speed: 0
| angle: 0
| stop: 0 hold
| stop: 64 terminate
| seqend
|
| item: sector name: dummy
| seq
| class: elevator move_floor
| event_mask: 0
| stop: 0 hold
| stop: 1 0
| message: 1 track_dev next_stop
| message: 1 [completion elevator] complete [num]
| stop: 2 terminate
| speed: 0
| seqend
6b. Sequencer charges
---------------------
These are found in the Gromas Mines, Robotics Facility and Arc Hammer. The
concept is the same as the tracking device, except that the sequencer charge
texture scrolls between 2 stops after being activated.
Here's what to do:
Firstly, create a small rectangular sector with height 8. Two
sides should have a width of 8 and the other two sides should have a very
small width (1 or 2). Adjoin this to the desired sector so it is an alcove
at Kyle's eye level. Call this sector "seq_charge". Place texture IWASEQUE.BM
on the wall opposite the wall with the adjoin. Give this wall flag 1 bit 128
(allow scroll mid tx). Add a dummy sector and call it "dummy". Add another
dummy sector and call it "oscillator". Add the following to the INF file
(add 3 to "items #").
| item: sector name: seq_charge
| seq
| class: trigger
| event_mask: 32
| client: dummy
|
| class: elevator scroll_wall
| event_mask: 0
| speed: 0
| angle: 0
| stop: 192 hold
| stop: 128 hold
| stop: 64 hold
| seqend
|
| item: sector name: dummy
| seq
| class: elevator move_floor
| event_mask: 0
| speed: 0
| stop: 0 hold
| stop: 1 0
| message: 1 oscillator master_on
| message: 1 [completion elevator] complete [num]
| stop: 2 terminate
| seqend
|
| item: sector name: oscillator
| seq
| class: elevator move_floor
| event_mask: 0
| master: off
| speed: 0
| stop: 0 0.5
| message: 0 seq_charge goto_stop 1
| stop: 1 0.5
| message: 1 seq_charge goto_stop 2
| seqend
7. BOSS GOALS
-------------
This is actually a little invention of mine - it's not used in any of the
original levels. A boss goal is an objective completed by killing an enemy.
This could be very handy in a "Terminate Boba Fett" or "Terminate General
Mohc" level!
The following can be used as boss goals:
BOBAFETT.WAX (What do you think?!?)
KELL.WAX (Kell dragon)
PHASE1.WAX (Phase 1 Dark Trooper)
PHASE2.WAX (Phase 2 Dark Trooper)
PHASE3X.WAX (Mohc)
The principle behind this is similar to goal objects like the Death Star
Plans. A certain element in the sequence of one of these objects will cause
an elevator called "boss", (or "mohc" in the case of PHASE3X.WAX) to move
to its next stop, where a complete message is sent to the completion elevator.
A boss goal is actually a trigger goal in disguise.
This is what you need to do to turn one of these sprites into a mission
objective:
Edit the .O file of the level and find the sprite that you want to kill
in order to complete the mission. Add this to its sequence (the stuff between
"Seq" and "Seqend"):
| BOSS: TRUE
Now edit your level. Add a dummy sector called "boss" if your
boss goal is Boba Fett, a Kell dragon, a Phase 1 Dark Trooper or a Phase 2
Dark Trooper. If the boss goal is Mohc, call the dummy sector "mohc".
Add this to the INF file of the level (add 1 to "items #"):
| item: sector name: boss/mohc
| seq
| class: elevator move_floor
| event_mask: 0
| stop: 0 hold
| stop: 1 0
| message: 1 [completion elevator] complete [num]
| stop: 2 terminate
| speed: 0
| seqend
ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕ
That's all folks! If you have anything to add to this file, if you want
to correct something I have wrong, comment or ask a question, mail me at:
kokjm@stmichaels.vic.edu.au
Any additions or corrections will be put in an updated version of this file.
Please include your name and e-mail address so that I can credit you.
May the Force be With You.